
// 978.最长湍流子数组
class Solution {
public:
    int maxTurbulenceSize(vector<int>& nums) {
        // 使用滑动窗口进行解决
        int n = nums.size();
        if(n == 1) return 1;
        int i = 0;
        int prev = 0, ret = 1;
        while(i < n - 1)
        {
            if(nums[i] == nums[i+1]) 
            {
                i++ ;
                continue;
            }
            int start = i++;    //记录起始位置
            int flag = (nums[i]-nums[start]>0 ? 1 :-1);     // 保存当前位置与上一个位置的关系
            while(i < n-1 && flag*(nums[i+1]-nums[i]) < 0)  // 比较上一个位置和下一个位置是不是湍流子数组
            {
                flag = (nums[i+1]-nums[i]>0?1:-1);          // 更新上一个位置
                i++;
            } 
            
            ret = max(ret,i - start + 1);
        }
        return ret;
    }
};